package myQueue;

import java.util.Arrays;

//用一个数组实现循环队列
public class MyqueueArray {
    private int[]array;

    private int head;
    private int tail;
    public MyqueueArray(int k){
        array=new int[k];
    }

    //元素入队方法
    public void push(int data){
        //检查数组是否已满
        if(isFull()){
            this.array= Arrays.copyOf(array,array.length+4);
        }
            array[tail]=data;
            tail=(tail+1)% array.length;

    }

    //弹出队首元素
    public int poll(){
        //判断队列是否为空
        if(empty()){
            return -1;
        }
        int temp=array[head];
        head=(head+1)% array.length;
        return temp;
    }

    //获取队首元素
    public int peek(){
        //判断队列是否为空
        if(empty()){
            return -1;
        }
        return array[head];
    }


    //获取队尾元素
    public int rear(){
        //判断队列是否为空
        if(empty()){
            return -1;
        }
        int temp=(tail==0)? array.length-1:tail-1;
        return array[temp];
    }


    //判断队列是否为满
    public boolean isFull(){
        if((tail+1)% array.length==head){
            return true;
        }
        return false;
    }

    //判断队列是否为空
    public boolean empty(){
        return head==tail;
    }


}
